/**
 * Created by mahai on 2018/12/26.
 */
const express = require('express');
const router = express.Router();
const passport = require('passport');

const messageChildren = require('../../models/MessageChildren');
const ArticleList = require('../../models/ArticleList');

//$rote GET api/messagechildren
// @desc 返回请求的json数据
// @access public
router.get('/',(req,res)=>{
    res.send (`
    文章评论的留言---对人评论
/**
*  [post] /add
*   param:{
*       articleId:文章id （*）
*       messageuser:留言用户 （*）
*       messageuserId:留言用户id （*）
*       Avatar：留言用户头像 
*       content:留言内容 （*）
*       to_id:被留言人id （*）
*       to_name:被留言人名称 （*）
*       to_read:被留言人是否读过 （*）
*   }
*/  
/**
 * [get] find
 * articleId:文章id
 * to_id:被留言人id
 * to_read:被留言人是否读过
 * messageuserId:留言人的id
 * page：当前页
 * rows：一页显示的个数
 * @access private  根据create_time降序排序
 */
 
 /**
 * [post] likenum
 * id:留言的id
 * 更新点赞数量
 * @access private
 */
    `)
});

router.post('/add',(req,res)=>{
    const messageFiles = {};
    if(req.body.articleId) messageFiles.articleId = req.body.articleId;
    if(req.body.messageuser) messageFiles.messageuser = req.body.messageuser;
    if(req.body.messageuserId) messageFiles.messageuserId = req.body.messageuserId;
    if(req.body.Avatar) messageFiles.Avatar = req.body.Avatar;
    if(req.body.content) messageFiles.content = req.body.content;
    if(req.body.to_id) messageFiles.to_id = req.body.to_id;
    if(req.body.to_name) messageFiles.to_name = req.body.to_name;
    if(req.body.to_read) messageFiles.to_read = req.body.to_read;
    if(req.body.messageId) messageFiles.messageId = req.body.messageId;
    if(req.body.extra_params){
        let extra_params = req.body.extra_params;
        if(JSON.stringify(extra_params) === '{}'){
            messageFiles.extra_params = {"exports": "extra_params是扩展字段"};
        } else {
            messageFiles.extra_params = req.body.extra_params
        }
    }

    new messageChildren(messageFiles).save().then(message => {
        ArticleList.findOne({_id:messageFiles.articleId }).then(isArticleList=>{
            if(!isArticleList){
                return res.status(401).json({msg:'查询失败！'})
            }
            //更新文章中留言数量
            const like = isArticleList.messnum+1;
            ArticleList.findOneAndUpdate(
                { _id:isArticleList._id },
                { $set: { messnum: like } },
                {new:true}
            ).then(ss=>{
                res.json(message)
            })
        })
    }).catch(err=>res.status(400).json(err))
});

/**
 * [get] find
 * articleId:文章id
 * to_id:被留言人id
 * to_read:被留言人是否读过
 * messageuserId:留言人的id
 * page：当前页
 * rows：一页显示的个数
 */
router.get('/find',(req,res)=>{
    let messageObj = {};
    if(req.query.articleId) messageObj['articleId']=req.query.articleId;
    if(req.query.to_id) messageObj['to_id']=req.query.to_id;
    if(req.query.messageuserId) messageObj['messageuserId']=req.query.messageuserId;
    if(req.query.to_read) messageObj['to_read']=req.query.to_read;


    if(req.query.page && req.query.rows && req.query.page !='' && req.query.rows !=''){
        //分页获取
        let page = parseInt(req.query.page) === 0 ? 1:parseInt(req.query.page);
        let rows = parseInt(req.query.rows);
        let count=0;
        let skip=0;
        let limit = 0;
        if(page <= 1){
            skip =0;
        } else {
            skip = rows*page - rows
        }
        messageChildren.find(messageObj).then(message=> {
            if(!message){
                message.length = 0;
            }
            count = message.length;
        }).then(()=>{
            //总页数 大于当前页数
            if(Math.ceil(count/rows) >= page){
                if(Math.ceil(count/rows) == page){
                    limit = count
                } else {
                    limit = parseInt(rows)
                }
            } else {
                return res.json({
                    data:null,
                    msg:'查询不到数据',
                    status:1
                });
            }
            messageChildren.find(messageObj).skip(skip).limit(limit).sort({create_time:-1}).then(pageMessage=>{
                if(!pageMessage){
                    return res.status(404).json({
                        data:[],
                        toatl:0,
                        page:page,
                        status:0
                    });
                }
                res.json({
                    data:pageMessage,
                    toatl:count,
                    page:page,
                    status:2
                })
            }).catch(err=>console.log(err))
        })
    } else {
        //获取所有
        messageChildren.find(messageObj).sort({create_time:-1}).then(Message=>{
            if(!Message){
                return res.status(404).json({
                    msg:'查询失败',
                    status:0
                });
            }
            res.json(Message)
        }).catch(err=>console.log(err))
    }
});
/**
 * [post] likenum
 * id:留言的id
 * 更新点赞数量
 * @access private
 */
router.get('/likenum/:id',passport.authenticate('jwt',{session:false}),(req,res)=>{
    messageChildren.findOne({_id:req.params.id }).then(isMessage=>{
        if(!isMessage){
            return res.status(401).json({msg:'查询失败！'})
        }
        //更新文章中点赞数量
        const like = isMessage.like_num+1;
        messageChildren.findOneAndUpdate(
            { _id:req.params.id },
            { $set: { like_num: like } },
            {new:true}
        ).then(ss=>{
            res.json(ss)
        })
    })
});
module.exports = router;